package cc.ttiot.service.dataCollection.i2c;

import com.pi4j.io.i2c.I2CBus;

import java.io.IOException;

/**
 * @Description: i2c数据采集通用接口
 * @Author WangSuheng
 * @Date 2021/10/1 1:56
 * @Version 1.0
 */
public interface I2CCollection {
    //i2c总线号:树莓派只有一个i2c总线，就是1
    int RASPBERRY_I2C_BUS_NUMBER = I2CBus.BUS_1;
    //i2c总线挂载设备地址,目前使用单块ADS1015,未改变地址的情况下默认为0x48
    byte ADS1015_DEFAULT_ADDRESS = (byte) 0x48;

    //-----------------------------------------ADS-1015-------------------------------------------

    //与ADS-1015交互:表明要开始配置
    byte START_CONF = 0b0000_0001;

    //与ADS-1015交互:配置方式
    //配置方式一:读取A0数据(振动)
    byte READ_A0_CONF_1 = (byte) 0b1100_0000;
    byte READ_A0_CONF_2 = (byte) 0b1110_0010;

    byte[] CONF1 = new byte[]{START_CONF, READ_A0_CONF_1, READ_A0_CONF_2};

    //配置方式二:读取A1数据(风压)
    byte READ_A1_CONF_1 = (byte) 0b1101_0000;
    byte READ_A1_CONF_2 = (byte) 0b1110_0010;

    byte[] CONF2 = new byte[]{START_CONF, READ_A1_CONF_1, READ_A1_CONF_2};

    //读取数据流程
    byte READ = (byte) 0x00;

    //-----------------------------------------PCF-8591-------------------------------------------

    //PCF-8591数模转换板，在该项目中振动传感器使用该板子的AIN0端口，下面是读取AIN0端口的控制字节
    byte CONTROL_BYTE_IN_VIBRATION_COLLECTION = 0b0000_0000;

    //PCF-8591数模转换板，在该项目中风压传感器使用该板子的AIN1端口，下面是读取AIN1端口的控制字节
    byte CONTROL_BYTE_IN_WIND_PRESSURE_COLLECTION = 0b0000_0001;

    //采集单次数据
    double collect() throws IOException;
}
